同時処理が安全な修飾子

このセクションのすべてのメソッドは、互いに同時実行してメソッドを検索できます。

値を挿入


bool insert( const_accessor& result, const key_type& key );
 
bool insert( accessor& result, const key_type& key );

アクセサー resultが空でない場合 result を解放し、key, mapped_type() から構築された値をコンテナーに挿入しようとします。

挿入された要素への、またはコンテナーに既に存在する等しいキーを持つ要素へのアクセスを可能にする result を設定します。

要件:

  • value_type タイプは、[container.requirements] ISO C++ 標準の EmplaceConstructible の要件を満たしている必要があります。

  • mapped_type タイプは、[defaultconstructible] ISO C++ 標準の DefaultConstructible の要件を満たしている必要があります。

戻り値: 要素が挿入されていれば true、それ以外は false を返します。



template <typename K> 
bool insert( const_accessor& result, const K& key ); 

template <typename K> 
bool insert( accessor& result, const K& key );

アクセサー resultが空でない場合 result を解放し、key, mapped_type() から構築された値をコンテナーに挿入しようとします。

挿入された要素、またはコンテナーに既に存在する key 値と同等のキーを持つ要素へのアクセスを可能にする result を設定します。

このオーバーロードは、次の場合にのみオーバーロードの解決に参加します。

  • 修飾 ID hash_compare_type::is_transparent が有効であり、タイプを示します。

  • std::is_constructible<key_type, const K&>::valuetrue です。

要件: mapped_type タイプは、[defaultconstructible] ISO C++ 標準の DefaultConstructible の要件を満たしている必要があります。

戻り値: 要素が挿入されていれば true、それ以外は false を返します。



bool insert( const_accessor& result, const value_type& value ); 

bool insert( accessor& result, const value_type& value );

アクセサー resultが空でない場合 result を解放し、value をコンテナーに挿入しようとします。

挿入された要素への、またはコンテナーに既に存在する等しいキーを持つ要素へのアクセスを可能にする result を設定します。

要件: value_type タイプは、[container.requirements] ISO C++ 標準の CopyInsertable の要件を満たしている必要があります。

戻り値: 要素が挿入されていれば true、それ以外は false を返します。


bool insert( const value_type& value );

コンテナーに value の挿入を試みます。

要件: value_type タイプは、[container.requirements] ISO C++ 標準の CopyInsertable の要件を満たしている必要があります。

戻り値: 要素が挿入されていれば true、それ以外は false を返します。



bool insert( const_accessor& result, value_type&& value ); 

bool insert( accessor& result, value_type&& value );

アクセサー result が空でない場合 result を解放し、ムーブ・セマンティクスを使用して value 値をコンテナーに挿入しようとします。

挿入された要素への、またはコンテナーに既に存在する等しいキーを持つ要素へのアクセスを可能にする result を設定します。

value は有効のままですが、未指定の状態となります。

要件: value_type タイプは、[container.requirements] ISO C++ 標準の MoveInsertable の要件を満たしている必要があります。

戻り値: 要素が挿入されていれば true、それ以外は false を返します。


bool insert( value_type&& value );

ムーブ・セマンティクスを使用してコンテナーに value の挿入を試みます。

要件: value_type タイプは、[container.requirements] ISO C++ 標準の MoveInsertable の要件を満たしている必要があります。

戻り値: 要素が挿入されていれば true、それ以外は false を返します。

要素のシーケンスを挿入


template <typename InputIterator> 
void insert( InputIterator first, InputIterator last );

半開区間l [first, last) からすべての項目をコンテナーに挿入しようとします。

半開区間 [first, last) に同じキーを持つ複数の要素が含まれている場合、どの要素が挿入されるかは未指定です。

要件: InputIterator タイプは、ISO C++ 標準の [input.iterators] セクションの InputIterator 要件を満たしている必要があります。


void insert( std::initializer_list<value_type> init );

insert(init.begin(), init.end()) と等価です。

要素の配置


template <typename... Args> 
bool emplace( const_accessor& result, Args&&... args ); 

template <typename...Args> 
bool emplace( accessor& result, Args&&... args );

アクセサー resultが空でない場合 result を解放し、args から構築された要素をインプレースでコンテナーに挿入しようとします。

挿入された要素への、またはコンテナーに既に存在する等しいキーを持つ要素へのアクセスを可能にする result を設定します。

要件: value_type タイプは、[container.requirements] ISO C++ 標準の EmplaceConstructible の要件を満たしている必要があります。

戻り値: 要素が挿入されていれば true、それ以外は false を返します。



template <typename... Args> 
bool emplace( Args&&... args );

args からインプレースで構築された要素をコンテナーに挿入しようとします。

要件: value_type タイプは、[container.requirements] ISO C++ 標準の EmplaceConstructible の要件を満たしている必要があります。

戻り値: 要素が挿入されていれば true、それ以外は false を返します。

要素を消去

bool erase( const key_type& key );

要素のキーと同じ key が存在する場合、それをコンテナーから削除します。

戻り値: 要素が削除されていれば true、それ以外は false を返します。



template <typename K> 
bool erase( const K& key );

要素のキーと同じ key が存在する場合、それをコンテナーから削除します。

このオーバーロードは、修飾された ID hash_compare_type::is_transparent が有効で、タイプを示している場合にのみ、オーバーロードの解決に参加します。

戻り値: 要素が削除されていれば true、それ以外は false を返します。



bool erase( const_accessor& item_accessor ); 
bool erase( accessor& item_accessor );

item_accessor が所有する要素をコンテナーから削除します。

要件: item_accessor は、空であってはなりません。

戻り値: 現在のスレッドによって要素が削除された場合は true、別のスレッドで削除された場合は false を返します。